package com.base.cn.platform.os.entity.course.material;

import com.base.cn.platform.os.common.annotation.ImgAttr;
import com.base.cn.platform.os.common.mybatis.BaseEntity;
import com.base.cn.platform.os.common.utils.course.MaterialType;
import com.base.cn.platform.os.entity.course.cou.Course;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;
import java.util.Map;

/**
 * 素材实体
 *
 * @author s.li
 * @create 2018-04-19-17:10
 */
@Data

public class CouMaterial extends BaseEntity {
    /**
     * 素材名
     */
    private String name;
    /**
     * 类型，直播LIVE、视频VIDEO、文章ARTICLE,音频AUDIO
     */
    private String typeKey;
    /**
     * 隶属模块ID
     */
    private BigDecimal mouldId;
    /**
     * 老师/作者ID
     */
    private BigDecimal teacherId;
    /**
     * 存储播放类型，用于视频、音频、直播的归属区分（如：CC，96K，展示互动）
     */
    private String playType;
    /**
     * 播放码/直播路径/文章的音频//PC进入房间使用的唯一码
     */
    private String playUrl;
    /**
     * 房间Id
     */
    private String roomId;
    /**
     * 管理员参加码
     */
    private String adminCode;
    /**
     * 讲师参加码
     */
    private String teacherCode;
    /**
     * 学生参加码
     */
    private String studentCode;
    /**
     * 直播开始时间（类型为直播时有用）
     */
    private Date liveBeginTime;
    /**
     * 直播结束时间（类型为直播时有用）
     */
    private Date liveEndTime;
    /**
     * 文章简介（类型为文章时有用）
     */
    @ImgAttr
    private String articleSummary;
    /**
     * 文章内容（类型为文章时有用）
     */
    @ImgAttr
    private String articleContext;
    /**
     * 播放状态 1.正常 2.冻结
     */
    private Integer playStatus;
    /**
     * 提前进入时间
     */
    private Integer preEnterTime;
    /**
     * 1.并发2.人次3.互动  96k直播计费方式
     */
    private  Integer liveBilling;
    /**
     * 直播间助教(管理员)地址
     */
    private  String adminUrl;
    /**
     * 直播间讲师地址
     */
    private  String teacherUrl;
    /**
     * 直播间学员地址
     */
    private  String studentUrl;
    /**
     * 回放地址
     */
    private  String replayUrl;

    /**
     * 素材关联教师是否是问答讲师
     */
    private boolean isTeacherQuestion;
    //=======================
    /**
     * 素材时间 单位:秒
     */
    private Long videoDuration;

    /**
     * 小班课最大人数
     */
    private  String maxUsers;

    /**
     * 直播间名称
     */
    private String liveName;

    /**
     * 直播间公告
     */
    private String liveNotice;

    /**
     * 直播间类型
     */
    private String liveType;

    /**
     * 助教ID
     */
    private BigDecimal assistantId;

    /**
     * status 资源的状态 1.未发布 2.已发布 3.删除
     */

    //=======================
    private Map<String, Object> teacher;
    private Map<String, Object> assistant;
    private Course course;

    /**
     * 是否为直播素材
     *
     * @return {@code true}直播素材，否则返回{@code false}
     */
    public boolean isLive() {
        return MaterialType.TYPE_KEY_LIVE.getKey().equals(typeKey);
    }

    /**
     * 获取直播状态
     *
     * @return 1.已结束 2.直播中 3.未开始
     */
    public int getLiveState() {
        if (isLive()) {
            Date now = new Date();
            if(now.after(this.getLiveEndTime())){
                return 1;
            }
            if(now.after(this.getLiveBeginTime())){
                return 2;
            }
        }
        return 3;
    }

}
